from wxpy import *

import wx_reply
import wx_command
import load
import datetime
import re


# 微信机器人，缓存登录信息
# 如果你需要部署在服务器中，则在下面加入一个入参console_qr=True
# console_qr表示在控制台打出二维码，部署到服务器时需要加上
#设置当前会话的缓存路径,None为不缓存,True默认路径为wxpy.pkl
bot = Bot(cache_path=True)
# 加载配置信息到机器人
load.load_config_to_bot(bot)
now = datetime.datetime.now() + datetime.timedelta(minutes= -2)

"""好友功能"""
@bot.register(msg_types=FRIENDS)
def auto_accept_friends(msg):
    """自动接受好友请求"""
    wx_reply.auto_accept_friends(msg)


@bot.register(chats=Friend)
def friend_msg(msg):
    """接收好友消息"""
    if not msg.bot.is_friend_auto_reply:
        return None
    if msg.type == TEXT:
        wx_reply.auto_reply(msg)
        return None
    elif msg.type == RECORDING:
        return '不听不听，王八念经'
    else:
        pass


"""群功能"""
@bot.register(chats = bot.song_groups,except_self = False)
def group_msg(msg):
    """接收群消息"""
    # 群@转发功能
    if msg.is_at and msg.bot.is_forward_group_at_msg:
        msg.forward(msg.bot.master, prefix='「{0}」在群「{1}」中艾特了你：'.format(msg.member.name, msg.chat.name))
    if len(msg.bot.song_groups) > 0:
        msg.bot.is_song_groups = True
    else:
        msg.bot.is_song_groups = False
    if msg.type == TEXT:
        # 群回复
        if msg.bot.is_song_groups:
            if msg.bot.is_group_at_reply:
                # @机器人才回复
                if msg.is_at:
                    pass

            else:
                # 不用@直接回复
                #wx_reply.auto_reply(msg)
                    path = ''
                    song_name = re.search(r'(.*)(大本|大|大本诗歌|补充|小|青年|青|\s)(\D*)(\d+)',msg.text).group(2)
                    song_name_ext = re.search(r'(.*)(大本|大|大本诗歌|补充|小|青年|青|\s)(\D*)(\d+)',msg.text).group(3)
                    song_num = re.search(r'(.*)(大本|大|大本诗歌|补充|小|青年|青|\s)(\D*)(\d+)',msg.text).group(4)
                    if song_name in ['大本','大本诗歌','大']:
                        num_temp = int(song_num)
                        if '附' == song_name_ext:
                            num_temp += 780
                        num_temp = int(song_num)
                        num_value = str(num_temp)
                        path = '大本/' + num_value + '.png'
                        try:
                            msg.reply_image(path)
                        except:
                            msg.reply("嘤嘤嘤,找不到这首诗歌o(╥﹏╥)o")
    elif msg.type == SHARING and msg.bot.is_listen_sharing and msg.chat in msg.bot.listen_sharing_groups:
        # 群分享转发监控，防止分享广告
        msg.forward(msg.bot.master, prefix='分享监控：「{0}」在「{1}」分享了：'.format(msg.member.name, msg.chat.name))
    else:
        pass
    # 监听好友群聊，如老板讲话
    if msg.bot.is_listen_friend and msg.chat in msg.bot.listen_friend_groups and msg.member.is_friend in msg.bot.listen_friends:
        msg.forward(msg.bot.master, prefix='特别关心好友群消息：「{0}」在「{1}」发了消息 {2}：'.format(msg.member.is_friend.remark_name or msg.member.nick_name, msg.chat.name,msg.create_time.strftime("%Y-%m-%d %H:%M:%S")))
    return None


@bot.register(msg_types=NOTE)
def system_msg(msg):
    """接收系统消息"""
    wx_reply.handle_system_msg(msg)


"""管理员功能"""
@bot.register(chats=bot.master,except_self = False)
def do_command(msg):
    """执行管理员命令"""
    wx_command.do_command(msg)

'''忽略群消息
@bot.register(chats=MP,except_self = True)
def ignore(msg):
    return
    '''
# 堵塞进程，直到结束消息监听 (例如，机器人被登出时)
# embed() 互交模式阻塞，电脑休眠或关闭互交窗口则退出程序
bot.join()